// 组件: zj-dialog 弹窗
// ==================== 参数 ====================
// ※ show ==> 是否显示
// ※ title ==> 标题头部 (注: 为''不显示) (默认: '')
// ※ sureText ==> 确认按钮文字 (注: 为''不显示) (默认: '确定')
// ※ cancelText ==> 取消按钮文字 (注: 为''不显示) (默认: '取消')
// ※ data ==> 数据, 仅做传递使用
// ==================== 事件 ====================
// ※ bind:sure="sure(e)" ==> '确认'点击事件
// ※ bind:cancel="cancel(e)" ==> '取消'点击事件
// ==================== 插槽 slot ====================
// ※ 默认插槽 ==> xxxxx
// ==================== 方法 ====================
// ※ xxxxx ==> xxxxx

Component({
  // options: {
  //   multipleSlots: true // 在组件定义时的选项中启用多slot支持
  // },
  properties: {
    show: { // 是否显示
      type: Boolean,
      optionalTypes: [String, Number, Boolean],
      value: false
    },
    title: { // 标题头部
      type: String,
      value: ''
    },
    sureText: { // 确认按钮文字
      type: String,
      value: '确定'
    },
    cancelText: { // 取消按钮文字
      type: String,
      value: '取消'
    },
    data: { // 数据, 仅做传递使用
      type: String, // 没用, 这个设定太弱智了
      optionalTypes: [String, Number, Boolean, Object, Array]
    }
  },
  data: {
    show_child: false, // 是否显示
    animation: false // 动效
  },
  observers: {
    // ========== 监听'show', 赋值'show_child', 加动效 ==========
    'show': function (show) {
      if (show) {
        this.setData({ show_child: true })
        wx.nextTick(() => { this.setData({ animation: true }) })
      } else {
        this.setData({ animation: false })
        setTimeout(() => { this.setData({ show_child: false }) }, 300)
      }
    }
  },
  methods: {
    // ========== '确认'点击事件 ==========
    sure () {
      this.triggerEvent('sure', this.properties.data)
    },
    // ========== '取消'点击事件 ==========
    cancel () {
      this.triggerEvent('cancel', this.properties.data)
      this.setData({ show: false })
    }
  }
})
